package com.s7.pull.api;

import android.view.View;

import androidx.annotation.NonNull;

import com.s7.pull.listener.OnAnimEndListener;

/**
 * 内部刷新组件
 */
public interface RefreshInternal {

    /**
     * 获取实体视图
     * @return 实体视图
     */
    @NonNull
    View getView();

    /**
     * 拉拽准备刷新动作
     * @param fraction 当前拉拽高度与总高度的比
     * @param maxDragHeight 最大高度
     * @param height 默认高度
     */
    void onPull(float fraction, float maxDragHeight, float height);

    /**
     * 拉拽释放过程
     * @param fraction 当前拉拽高度与总高度的比
     * @param maxDragHeight 最大高度
     * @param height 默认高度
     */
    void onPullReleasing(float fraction, float maxDragHeight, float height);

    /**
     * 开始动画
     * @param maxHeight 最大高度
     * @param height 默认高度
     */
    void startAnim(float maxHeight, float height);

    /**
     * 结束
     * @param listener 结束动画回调
     */
    void onFinish(OnAnimEndListener listener);

    /**
     * 用于在必要情况下复位View，清除动画
     */
    void reset();
}
